{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "cdc89074",
   "metadata": {
    "tags": []
   },
   "source": [
    "#  <center>《大数据基础及应用》期末补考试题(2024春)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9d155746",
   "metadata": {},
   "source": [
    "**年级、专业、班级：** (双击可编辑，将括号替换为相应信息) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;**姓名：** (双击可编辑，将括号替换为相应信息)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    **学号：**  (双击可编辑，将括号替换为相应信息) \n",
    "    \n",
    "**考试科目：** 《大数据基础及应用》 补考 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **学期学年：**  2023-2024(1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;**考试时间：** 2024.02.25/09:30-11:30  &nbsp;&nbsp;&nbsp;&nbsp;   **考试地点：**   DS1408       "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "87b1a10d",
   "metadata": {},
   "source": [
    "### 考试说明：\n",
    "&ensp;&ensp;&ensp;&ensp;**1、本次考试一共3个大题，共计100分，请在下列对应单元格中完成程序的编写、运行及调试，不得另建其它文件或文件夹；**  \n",
    "&ensp;&ensp;&ensp;&ensp;**2、本次考试采用开卷考试方式，请独立完成，考试期间务必遵守考试纪律，不得有抄袭，夹带等违纪或作弊行为！！！**  \n",
    "&ensp;&ensp;&ensp;&ensp;**3、本次考试所使用的数据集文件(.csv)均采用utf-8编码格式，引用方式如：\"./resittests/datasets/a.csv\"。**"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "caa24acb",
   "metadata": {
    "tags": []
   },
   "source": [
    "### 第一题.(30分)编写程序，实现下列功能。  \n",
    "&ensp;&ensp;某驾校学员的考试成绩可描述为格式：1001,50,80,90,75#1002,91,92,83,94#1003,34,45,65,90，其中每名学员的成绩数据使用”#”分隔，每名学员的信息包括学员编号及科目一到科目四的成绩，使用逗号”,”分隔，目前驾驶考试规则是：一共4个考试科目，每个科目的满分都是100分，科目一、科目三和科目四成绩90分或90分以上算及格，科目二成绩80分或80分以上算及格，只有达到每科的及格标准，才称为通过考试，请根据该驾考规则编写程序，完成如下功能：   \n",
    "&ensp;&ensp;① 根据已提供的学员的考试成绩，输出每位学员已通过的考试科目(如式1.1)；  \n",
    "&ensp;&ensp;② 根据驾考规则输出已通过驾考的学员名单(如式1.2)。  \n",
    "&ensp;&ensp;数据说明：  \n",
    "&ensp;&ensp;a) 输入数据及格式：1001,50,80,90,75#1002,91,92,83,94#1003,34,45,65,90  \n",
    "&ensp;&ensp;b) 输出数据及格式：  \n",
    "&ensp;&ensp;&ensp;&ensp;1) 每位学员通过科目情况:1001,['科目三']#1002,['科目一', '科目二', '科目三', '科目四']#1003,['科目四'] &ensp;&ensp;&ensp;&ensp;     (式1.1)  \n",
    "&ensp;&ensp;&ensp;&ensp;2) 通过驾考的学员名单:1002 &ensp;&ensp; &ensp;&ensp;&ensp;&ensp; &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;  &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;\n",
    "&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;\n",
    "&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp; &ensp;&ensp;&ensp;(式1.2)  \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "fe375c1b",
   "metadata": {},
   "outputs": [],
   "source": [
    "\"\"\"代码_1.1(15分)：输出每位学员已通过的考试科目\"\"\"\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b7d6ff12",
   "metadata": {},
   "outputs": [],
   "source": [
    "\"\"\"代码_1.2(15分)：输出已通过驾考的学员名单\"\"\"\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d9ca92e9",
   "metadata": {
    "tags": []
   },
   "source": [
    "### 第二题.(40分)根据美国人口普查局1985年的工资普查数据集CPS1985.csv,编写程序绘制如下分析图：\n",
    "1)绘制不同年龄员工平均工资变化折线图，如图2.1：（10分）  \n",
    "![](./resittests/pictures/p2-1.png)  \n",
    "&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;图2.1：不同年龄员工平均工资变化折线图  \n",
    "2)绘制不同年龄员工最低和最高工资对照柱状图,如图2.2：（15分）    \n",
    "![](./resittests/pictures/p2-2.png)  \n",
    "&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;图2.2：不同年龄员工最低和最高工资对照柱状图   \n",
    "3)绘制此次普查不同性别人数分布占比饼图,如图2.3。（15分）    \n",
    "![](./resittests/pictures/p2-3.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "34a307f5",
   "metadata": {},
   "outputs": [],
   "source": [
    "\"\"\"代码_2.1(10分)：绘制不同年龄员工平均工资变化折线图\"\"\"\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4c8fc17b",
   "metadata": {},
   "outputs": [],
   "source": [
    "\"\"\"代码_2.2(15分)：绘制不同年龄员工最低和最高工资对照柱状图\"\"\"\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9ada38cc",
   "metadata": {},
   "outputs": [],
   "source": [
    "\"\"\"代码_2.3(15分)：绘制此次普查不同性别人数分布占比饼图\"\"\"\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "057899e6-076a-4afe-8e59-f627b4d00db7",
   "metadata": {},
   "source": [
    "### 第三题.(30分) 按照指定网络结构建立卷积神经网络对下列猴痘病毒(monkeypox)图片进行猴痘与非猴痘分类。\n",
    "1)(10分)根据文件夹./resittests/datasets/monkeypox/中的图片数据，按照如下规则生成训练文件夹图片数据集和测试文件夹图片数据集，生成的文件夹结构如图3.1所示：    \n",
    "1.1）考生根目录下建立考生的学号子目录；  \n",
    "1.2）学号子目录下建立\"train\"和\"test\"子目录；  \n",
    "1.3）将文件夹./resittests/datasets/monkeypox/中的图片数据按照不同类别并以7:3比例划分出训练图片和测试图片；    \n",
    "1.4）将训练图片和测试图片拷贝到\"train\"和\"test\"子目录的相应类别文件夹中。  \n",
    "操作提示：  \n",
    "&ensp;&ensp;①使用os模块的mkdir函数创建目录；             \n",
    "&ensp;&ensp;②使用shutil模块的copy函数拷贝文件，例如：shutil.copy(\"./a/1.txt\",\"./b/\"),表示将a子目录下的1.txt文件拷贝到b子目录下；   \n",
    "![](./resittests/pictures/p3-1.png)   \n",
    "2)(10分)按照下面的要求构建模型，网络模型中每层结构和顺序要求如下:    \n",
    "&ensp;&ensp;①第一层:卷积层，卷积核大小为3 * 3，卷积核数目为16，激活函数relu；  \n",
    "&ensp;&ensp;②第二层:池化层，2 * 2区域进行最大池化；  \n",
    "&ensp;&ensp;③第三层:Drop层：0.5;    \n",
    "&ensp;&ensp;④第四层:卷积层，卷积核大小为3 * 3，卷积核数目为16，激活函数relu；  \n",
    "&ensp;&ensp;⑤第五层:池化层，2 * 2区域进行最大池化；    \n",
    "&ensp;&ensp;⑥第六层:Drop层，0.5;    \n",
    "&ensp;&ensp;⑦第七层:拉平层;  \n",
    "&ensp;&ensp;⑧第八层:全连接层，神经元数目16，激活函数relu；    \n",
    "&ensp;&ensp;⑨第九层:全连接层，神经元数目2，激活函数softmax。     \n",
    "3)(10分)训练所构建的模型(精度不做要求)，训练后利用测试集计算模型得分。  \n",
    "说明：  \n",
    "a)数据集：\n",
    "猴痘图片数据集存储在./resittests/datasets/monkeypox/文件夹中，其中有99张猴痘图片和99张非猴痘图片,图片样例如图3.2所示:   \n",
    "![](./resittests/pictures/p3-2.png)  \n",
    "b)算法提示：  \n",
    "①使用keras.preprocessing.image库中的ImageDataGenerator函数生成训练集与测试集的生成器对象datagen；       \n",
    "②调用对象datagen的flow_from_directory函数生成训练数据集train_generator和测试数据集test_generator；    \n",
    "③构建指定结构的卷积神经网络模型；  \n",
    "④利用train_generator数据训练模型model；  \n",
    "⑤利用test_generator数据测试模型，并给出模型得分score。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "fb221b22-07e5-4f6a-a04e-e83d393b2e5a",
   "metadata": {},
   "outputs": [],
   "source": [
    "\"\"\"代码_3.1(10分)：划分训练集和测试集\"\"\"\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8ca4c423-a21d-4f51-b057-b55469cbe302",
   "metadata": {},
   "outputs": [],
   "source": [
    "\"\"\"代码_3.2(10分)：构建模型\"\"\"\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4ddbb086-d97b-4b0b-83c8-1d449f8244e4",
   "metadata": {},
   "outputs": [],
   "source": [
    "\"\"\"代码_3.3(10分)：训练所构建的模型\"\"\"\n",
    "\n",
    "\n",
    "\n"
   ]
  }
 ],
 "metadata": {
  "hide_input": false,
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
